package com.yoshino.principle.liskov_substitution.improve;

import lombok.extern.slf4j.Slf4j;

/**
 * @author yoshino
 **/
@Slf4j
public class LiskovSubstitution {
    public static void main(String[] args) {
        Aa a = new Aa();
        log.info("11 - 3 =" + a.func1(11, 3));
        log.info("1 - 8 =" + a.func1(1, 8));
        log.info("---------------");
        Bb b = new Bb();
        // 本意是求出 11 - 3
        log.info("11 - 3 =" + b.func1(11, 3));
        log.info("1 - 8 =" + b.func1(1, 8));
        log.info("11 + 3 + 9 =" + b.func2(11, 3));
    }
}


class Aa {
    /**
     * 返回两个数的差
     *
     * @param num1 num1
     * @param num2 num2
     * @return 差值
     */
    public int func1(int num1, int num2) {
        return num1 - num2;
    }
}

/**
 * 继承 A 类
 * 增加一个新功能
 */
class Bb extends Aa {

    @Override
    public int func1(int a, int b) {// 这里，重写了 A 类的方法，可能是无意识
        return a + b;
    }

    public int func2(int a, int b) {
        return (func1(a, b) + 9);
    }
}
